<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    .box {
      width: 300px;
      height: 300px;
      background-color: red;
      border: 10px solid black;
    }
    .new-style {
      background-color: aqua;
    }
  </style>
</head>
<body>
  <div class="box" data-xx="数据" data-xx1="数据2"></div>
</body>
</html>

<script>
// JS 操作DOM-style/class、 JS 获取 DOM 大小 、 DOM树、dataset、var的缺陷-let
let box = document.querySelector('.box');
// box.classList.add('new-style')
// box.onclick = function() {
//   console.log('click');
//   box.classList.toggle('new-style');
// }
// --------------------

// JS 获取 DOM 大小
  // clientWidth :  获取 content + padding
  // offsetWidth：  获取 content + padding + border
// console.log(box.offsetWidth);


// dataset：h5 的新功能
  // 作用：为 DOM 标签 绑定「数据」
  // JS 获取 DOM 上的数据： dom.dataset
box.onclick = function() {
  console.log('click', box, box.dataset);
}

// ------------ var 的缺陷：
/* 
  1. var 能重复声明 同名变量
  2. var 有变量提升
  3. var 声明的变量 会 挂载到 window 上
  4. var 声明的变量 没有 「块级作用域」
*/

for (var i = 0; i < 5; i++) {
  function say() {
    console.log('say', i);
  }
  // say(); // 同步执行

  setTimeout(say, 0); // 异步执行
}

console.log('outer', i);
console.log('say', i);  // * 5 次执行
</script>
